Data centers provide computing resources for use by one or more clients. These services may include computing, storage and networking services. For example, a data center may provide a machine to host an application, storage to store application data, cache to quickly respond to repeated data requests and networking to enable communication between resources. By making use of the data center services, a customer may pay for computing and/or resource use rather than purchasing anticipated hardware needs. This enables a customer to expand and contract use of computing services according to demand. For example, an application may be configured to request more storage as needed rather than a developer or administrator monitoring and anticipating use.
On demand systems may be used to reduce the number of times a database must be read or written to. For example, one implementation uses a client centered architecture where a client (a client of a database system, rather than an end-user client) knows the servers, but the servers are not known to each other. To read or set a key, the client uses a hash to determine which server to contact and contacts that server. The server then calculates a second hash to determine where to store or read the corresponding value. Additions or subtractions to the group of servers are managed by the client.